package com.hbnu.array;

import java.util.Scanner;

/**
 * 圆桌离开小游戏
 *
 * @author chendikai
 * @date 2024-09-12 10:28
 */
public class ArrayDemo07 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入玩游戏的人数：");
        int n = scanner.nextInt();
        System.out.println("请输入开始报数的人的编号：");
        int k = scanner.nextInt();
        System.out.println("请输入淘汰出局者所报的号：");
        int m = scanner.nextInt();

        int index;   // 每一轮开始报数者的编号
        int[] person = new int[n];  // 用于记录玩游戏的人，如果玩家未被淘汰出局，则数组元素值为0，如果淘汰出局了，则将数组元素值改为1
        int[] seq = new int[n - 1];  // 用于记录被淘汰出局者的编号

        for (int i = 0; i < n - 1; i++) {
            index  = k;

            // 开始报数玩游戏
            for (int j = 0; j < m; index++) {
                if (person[index % n] == 0) {  // 判断玩家是否出局，出局玩家不参与报数
                    j++;
                }
            }

            // 将被淘汰出局的人数组元素值改为1
            person[(index - 1) % n] = 1;

            // 将被淘汰出局者的编号存入seq数组
            if ((index - 1) % n != 0) {
                seq[i] = (index - 1) % n;
            } else {
                seq[i] = index - 1;
            }

            // 更新下一轮开始报数者的编号
            k = index % n;
        }

        // 打印被淘汰出局者的编号
        for (int i = 0; i < seq.length; i++) {
            System.out.print(seq[i] + "\t");
        }

    }
}
